package unq_ui.tp_robots_web_wicket;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import robots.models.JugadorAppModel;
import robots.models.NombreJugadorModel;

public class HomePage extends WebPage {

	private static final long serialVersionUID = -567920862641243163L;
	private Idioma idiomaDefault= new IdiomaEsp();
	private Idioma idioma;
	
	public HomePage(final PageParameters parameters) {
		this.idioma= idiomaDefault;
		crearBotonesDeIdioma();
		crearFormularioIngresarNombre();
		agregarLabelsIdioma();
	}
	
	public HomePage(Idioma idioma){
		this.idioma= idioma;
		crearBotonesDeIdioma();
		crearFormularioIngresarNombre();
		agregarLabelsIdioma();
	}

	private void crearBotonesDeIdioma() {
		add(new Link<Idioma>("esp"){
			private static final long serialVersionUID = 707999459347367391L;
			@Override
			public void onClick() {
				setResponsePage(new HomePage(new IdiomaEsp()));
			}
		});
		
		add(new Link<Idioma>("eng"){
			private static final long serialVersionUID = 4410765602877303235L;
			@Override
			public void onClick() {
				setResponsePage(new HomePage(new IdiomaEng()));
			}
		});
	}

	private void agregarLabelsIdioma() {
		add(new Label("tituloDeBienvenida",idioma.tituloDeBienvendida_1));
		add(new Label("indicadorIngreseNombre",idioma.indicadorIngreseNombre_1));
	}

	private void crearFormularioIngresarNombre() {
		final Idioma idiomaSeleccionado= this.idioma;
		final Form<NombreJugadorModel> form = new Form<NombreJugadorModel>("ingresarNombre",	
				new CompoundPropertyModel<NombreJugadorModel>(new NombreJugadorModel())) {
					private static final long serialVersionUID = 1L;
			@Override
			protected void onSubmit() {
				JugadorAppModel modelJugador= new JugadorAppModel();
				modelJugador.setJugador(modelJugador.buscarOCrearJugadorYAsignar(this.getModelObject().getNombre()));
				setResponsePage(new MainPage(modelJugador,idiomaSeleccionado));
			}
		};
		add(form);
		form.add(new TextField<String>("nombre"));		
	}
}
